『Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire』
1991
論文
PDF
著者
Erik Meijer
Maarten Fokkinga
Ross Paterson
#WIP
読もうと思ったが難しすぎるmrsekut.icon
先にコレを読むのが良さそう
http://cympfh.cc/paper/bananas-lenses-envelopes-barbedwire.html
こっちなら全然読める
4種類のカッコ
スクボ上のtexでは表現できなさそうmrsekut.icon
Bananas
https://gyazo.com/1cb2f53759af5a1c14b5c9fe23f319c9
Catamorphism
Lenses
https://gyazo.com/c32e9d6ac635919425df1ada0354faf7
Anamorphism
Envelopes
封筒
https://gyazo.com/69e2255e29477f4e3bec50d797a99457
Hylomorphism
Barbed Wire
有刺鉄線
https://gyazo.com/28fe7b807cb030eef9cf49f23f47a3f5
Paramorphism
4種類の括弧とかは、表記の話である
Bird–Meertens formalismの表記法を用いてこの論文は書かれている
四則演算や、関数の合成について証明し利用することは容易
しかし、再帰関数について同じことをするのは難しい
なぜなら、recursion schemeを単独で参照することが難しいから
そこで、様々なRecursion Schemeを別々のhirgher order functionとして扱う
再帰的に定義された関数を構成する成分とは独立した独自の表記法を与える
これは、構造化プログラムのアプローチとにている
条件分岐やloopなどの構造化されたcontrol flowを用いることで、gotoの使用を避けることができる
関数型プログラムでは、プログラムのpritimiveとして、どのRecursion Schemeを選択するかが問題になる
逆に言えば、recursion schemeを使わない関数型のプログラムは、gotoを使った構造化プログラムと同等に酷い
Richard Bird、Lambert Meertens、Roland Backhouseらの理論を遅延型関数型言語(Haskell)に拡張したもの
読もうと思ったが、難しすぎるなmrsekut.icon
前提知識が欠けすぎている
https://qiita.com/tnagao7/items/ab0135619d0584dc6cb0
Recursion Scheme
http://maoe.hatenadiary.jp/entry/20090820/1250782646
https://cympfh.cc/paper/bananas-lenses-envelopes-barbedwire.html